package br.com.sgac.model;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@Table(name = "pessoa")
@Inheritance(strategy =InheritanceType.JOINED)
public abstract class Pessoa {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	protected long id;
	
	@Column (nullable = false)
	protected String nome;
	
	@Column(length=12)
	protected String telefone;
	
	@Column(length=12)
	protected String celular;
	
	@Column(length=200)
	protected String email;
	
	@Temporal(TemporalType.TIMESTAMP)
	protected Calendar dataNascimento;
	@Transient
	protected String dNascimento;
	
	@Column(length=30)
	protected String estadoCivil;
	
	@Column(length=20)
	protected String sexo;
	
	@Column(length=20, unique = true, nullable = false)
	protected String rg;
	
	@Column(length=11, unique = true, nullable = false)
	protected String cpf;
	
	@Column(columnDefinition = "text")
	protected String observacao;
	
	@Column(columnDefinition = "boolean default false")
	protected boolean deletado;
	
	@OneToOne(cascade = CascadeType.ALL)
	protected Endereco endereco;
	
	@Temporal(TemporalType.TIMESTAMP)
	protected Calendar dataCadastro;
	
	@Column(length = 3)
	private String grupoSanguineo;
	
	public Pessoa() {
		super();
	}
	public void setId(long id) {
		this.id = id;
	}
	public long getId() {
		return id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getCelular() {
		return celular;
	}
	public void setCelular(String celular) {
		this.celular = celular;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Calendar getDataNascimento() {
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
		this.setdNascimento(formatador.format(dataNascimento.getTime()));
		return dataNascimento;
	}
	public void setDataNascimento(Calendar dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
	public String getEstadoCivil() {
		return estadoCivil;
	}
	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}
	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	public String getRg() {
		return rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public String getObservacao() {
		return observacao;
	}
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	public boolean isDeletado() {
		return deletado;
	}
	public void setDeletado(boolean deletado) {
		this.deletado = deletado;
	}
	public Endereco getEndereco() {
		return endereco;
	}
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	public Calendar getDataCadastro() {
		return dataCadastro;
	}
	public void setDataCadastro(Calendar dataCadastro) {		
		this.dataCadastro = dataCadastro;
	}

	public String getGrupoSanguineo() {
		return grupoSanguineo;
	}
	public void setGrupoSanguineo(String grupoSanguineo) {
		this.grupoSanguineo = grupoSanguineo;
	}
	public String getdNascimento() {
		return dNascimento;
	}
	public void setdNascimento(String dNascimento) {
		this.dNascimento = dNascimento;
	}
}